A Physically Unclonable Function (PUF) is a physical circuit inside an integrated circuit device whose behavior is determined by random physical variations inside the integrated circuit or within the proximate environment of the integrated circuit. PUFs may be used to derive encryption keys for configuring Programmable Logic Devices (PLDs) such as Field Programmable Gate Arrays (FPGAs), which are integrated circuits that include programmable logic blocks and programmable routing. The random physical variations in and around the integrated circuits may be due to random manufacturing variations within the device (such as variations in transistor thresholds, transistor driver strengths, capacitances, or resistances), or may be due to explicitly added sources of variations (such as device coatings that contain a slurry of dielectric particles that cause random fluctuations in capacitance sensors).
Because of these variations, corresponding PUFs on multiple ostensibly identical devices will behave differently. Sometimes, a PUF will accept an input (called a challenge), and produce an output (called a response). A response may include multiple bits. Alternatively, a PUF may return a response with no need for an explicit challenge. The random variations between ostensibly identical devices may cause the corresponding PUFs in different devices to return different responses under the same conditions (including in response to the same challenges).
PUF responses may be used to create, encrypt, or obfuscate encryption keys. The PUF responses can also be used to create unique ID values that can be used to uniquely identify a device, or to otherwise make one device behave differently from another ostensibly identical device. These use cases require, for a particular instance of a device, that the PUF response for a particular challenge input be stable (such that it consistently returns the same value for that challenge on that device).